package com.arthur.gao.springbootwebsocket.h5.schedule;

import com.arthur.gao.springbootwebsocket.h5.config.MyHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.TextMessage;

/**
 *
 * Spring的定时器有3种模式，分别是：
 * 1.fixedDelay 固定每隔一段时间执行一次，比如 fixedDelay=3s,任务执行时间为5s  第二次执行时间应该是5s+3s=8s后执行，总会保证每两个任务执行间的时间间隔为3s
 * 2.cron 如表达式为：0/3 * * * * ? * (执行周期为3s) 任务执行时间为5s  那么在第二次任务要执行的时候发再第一次任务还在执行，那么第二次任务放弃执行，即第二次任务执行的时间应该在 6s时执行
 * 3.fixedRate 与fixedDelay有点不同，如果每3s执行一次，任务执行时间为5s 那么第二次执行的时间应该主是第一次任务执行完后，立即执行，即在5s时执行
 * Created by gaopan on 2019-04-22 21:14
 */

@Component
@EnableScheduling //开启定时任务注解
public class SendMsg2Client {


    @Autowired
    private MyHandler webSocketHandler;

   // @Scheduled(cron = "0/3 * * * * ? *")
    //@Scheduled(fixedDelay = 5000)
   //@Scheduled(fixedRate = 3000)
    public void sendMsg2Client(){

      boolean retvalue=  webSocketHandler.sendMessageToUser("888",new TextMessage("服务端发送了一条信息:"+System.currentTimeMillis()));
        System.out.println("推送消息结果="+retvalue);
    }

}
